Go Modules
資料集
https://blog.golang.org/using-go-modules 公式ブログ
play-with-go.dev Go fundamentals
https://golang.org/ref/mod
https://pkg.go.dev/about
https://qiita.com/eihigh/items/9fe52804610a8c4b7e41
ページ
Go Modulesチュートリアル(Go fundamentals)
Go Modules Reference
module: a collectoin of packages
module: identified by a module path @ go.mod file
module root directory: go.mod location
main module: go command ? #Questions
package: compiled together
package path = module path + subdirectory
Module Paths
modulepath = repository root path + directory + major version suffix
directory: serves as a prefix for semantic version tag
Versions
an immutable snapshot of a module
Go Moduleを作る
moduleはGoがコードを実行するコンテキストを特定する
そのコードを走らせるべきGoのバージョン
そのモジュールが要求する他のモジュール
go mod init [module-path] で新しいgo.modを作成することでgo moduleを初期化する
引数を与えない時、import commentsやversion control configからimport-pathを推測する
Go言語のimport-path
他のモジュールからコードを呼び出す
使用する側のモジュールをgo mod initで初期化する
依存したいモジュールをgo get import-pathで宣言する。こうするとgo.modが更新される
ダウンロードも行われている→Q. どこに?
go.sumも作られている
go help getでヘルプが見られる
go get は何も指定しなければ最新バージョンを受信する。pseudo-versionである場合もある
エラーハンドリングを追加する-依存されるモジュールの更新
依存されるモジュールを更新してpushする
go get module-path@<commit-hash> で更新する
インタフェースが変わっているのでコンパイルできない
replace directiveを使う
greetingsモジュールを更新する
リモートリポジトリにあるモジュールの代わりにローカルのpathで置き換えるようにすることができる
go mod edit -replace gopher.live/u8c84c5b19a02/greetings=/home/gopher/greetings
$ cat go.mod
module gopher.live/u8c84c5b19a02/hello
go 1.15
require gopher.live/u8c84c5b19a02/greetings v0.0.0-20210302041901-f838668a0c88
replace gopher.live/u8c84c5b19a02/greetings => /home/gopher/greetings
テストを追加する
コンパイルとインストール
go runはバイナリを保存しない
go installはコンパイルして得られたバイナリを実行可能な場所に配置する
go list go list -f '{{.Target}}' を使うと、goコマンドが現在のパッケージをインストールするであろう場所がわかる
go buildは
用語集
#Go言語